package org.zjx.prop.domain.model;

import lombok.Data;
import lombok.NoArgsConstructor;
import org.zjx.prop.domain.enums.ItemType;

import java.util.Map;

/**
 * 道具模板 - 定义道具的基础属性
 */
@Data
@NoArgsConstructor
public class ItemTemplate {
    private int id;                     // 模板ID
    private String name;                // 道具名称
    private String description;         // 道具描述
    private String imageBase64;         // 道具图片
    private ItemType type;              // 道具类型
    private int level;                  // 道具等级
    private int maxStack;               // 最大堆叠数量
    private boolean tradable;           // 是否可交易
    private boolean destroyable;        // 是否可销毁
    private boolean sellable;           // 是否可出售给系统
    private int useLimit;               // 使用限制(0=无限制,1=战斗中,2=非战斗)
    private boolean needGather;             //是否需要匹配模板

    // 动态属性(不同类型道具有不同属性)
    private Map<String, Object> attributes;

    /**
     * 检查道具是否可堆叠
     */
    public boolean isStackable() {
        return this.maxStack > 1 ;
    }

    /**
     * 检查道具是否可在战斗中使用
     */
    public boolean isBattleUsable() {
        return useLimit == 1;
    }
}